package com.linkai.注解和反射.reflect;

/**
 * @Description: 类加载器
 * @Author: 林凯
 * @Date: 2021/10/21 17:38
 */
public class Test07 {
    public static void main(String[] args) throws ClassNotFoundException {
        // 获取系统类的加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);
        // 获取系统类加载器的父类加载器 -> 扩展类加载器
        ClassLoader parent = systemClassLoader.getParent();
        System.out.println(parent);
        // 获取扩展类加载器的父类加载器 -> Bootstrap 加载器（C/C++）
        ClassLoader parent1 = parent.getParent();
        System.out.println(parent1);

        System.out.println("~~~~~~~~~~~~~~~~~~~");
        // 测试当前类是哪个类记载器加载的
        ClassLoader classLoader = Class.forName("com.linkai.注解和反射.reflect.Test07").getClassLoader();
        System.out.println(classLoader);

        // 测试 JDK 内置的类是那个类加载器加载的
        ClassLoader classLoader1 = Class.forName("java.lang.Object").getClassLoader();
        System.out.println(classLoader1);

        // 如何获得系统类加载器可以加载的路径
        System.out.println(System.getProperty("java.class.path"));

        // 双亲委派机制

    }
}
